#ifndef _VM_MEMORY_SCHEME_H_
#define _VM_MEMORY_SCHEME_H_


class VMMemoryScheme
{
	public :
		//gets the words size of the virtual memory scheme
		unsigned long int getWordSize()=0;

		//gets the address size of the virtual memory scheme
		unsigned long int getAddressSize()=0;

		//translates a virtual address to a physical address
		unsigned long int translateVirtualAddress(
					unsigned long int vaddr)=0;

		//translates a physical address to a virtual address
		unsigned long int translatePhysicalAddress(
					unsigned long int paddr)=0;

		//writes a virtual word to physical word given a virtual address
		//and physical address.
		void writeVirtualWord(VMPhysicalMemory* mem,
					unsigned char* virtualWord,
					unsigned long int vaddr
					)=0;

		//reads a virtual word from a physical word given a virtual address
		//and physical address.
		unsigned char* readVirtualWord(VMPhysicalMemory* mem,
						unsigned char* virtualBuffer,
						unsigned long int vaddr
						)=0;
		
};

#endif
